<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Generator</title>
</head>

<body>
  <script>
    // Generator函数学习 函数后面带*号表示这是一个generator函数,里面可以用yield标识符
    function* foo() {
      let a = 0
      const y = yield ++a
      console.log(111111)
      return y
    }
    const aRes = foo()
    /*     aRes你可以理解为一个指针,这个如果学过算法与数据结构就很好理解了
        你可以理解为调用这个generator函数它不会执行里面的代码,而是返给你一个指针 */
    /*   然后指针上面有个next()方法,调用之后,指针就会指到第一个yield这里,再次调用它就会
      指向第二个yield,如果没有返回结果的对象里面,done的属性就为true */
    console.log(aRes.next())
    console.log(aRes.next(3))
    // console.log(aRes.next(5))
  </script>
</body>

</html>